$(function () {
    load();
});

function load() {
    $('#exampleTable')
        .bootstrapTable(
            {
                method: 'POST', // 服务器数据的请求方式 get or post
                url: "/secretKey/getSecretKyPage", // 服务器数据的加载地址
                //	showRefresh : true,
                //	showToggle : true,
                //	showColumns : true,
                iconSize: 'outline',
                toolbar: '#exampleToolbar',
                striped: true, // 设置为true会有隔行变色效果
                dataType: "json", // 服务器返回的数据类型
                pagination: true, // 设置为true会在底部显示分页条
                singleSelect: false, // 设置为true将禁止多选
                // contentType : "application/x-www-form-urlencoded",
                // //发送到服务器的数据编码类型
                pageSize: 10, // 如果设置了分页，每页数据条数
                pageNumber: 1, // 如果设置了分布，首页页码
                //search : true, // 是否显示搜索框
                showColumns: false, // 是否显示内容下拉框（选择显示的列）
                sidePagination: "server", // 设置在哪里进行分页，可选值为"client" 或者 "server"
                queryParamsType: "",
                // //设置为limit则会发送符合RESTFull格式的参数
                queryParams: function (params) {
                    let queryParams = {
                        current: params.pageNumber,
                        size: params.pageSize,
                        // secretKey: $('#secretKey').val(),
                        status: $('#state').val(),
                        unitName: $('#unitname').val(),
                        userName: $('#username').val(),
                        // mobile:$('#mobile').val(),
                        userFrom: 1
                    };
                    return JSON.stringify(queryParams);
                },
                responseHandler: function (res) {
                    if (res.code !== '0') {
                        layer.msg('查询失败');
                        console.log(res.msg)
                        return false
                    }
                    return {
                        "total": res.data.total,//总数
                        "rows": res.data.records   //数据
                    };
                },
                columns: [
                    {
                        title: '序号',
                        field: '',
                        align: 'center',
                        formatter: function (value, row, index) {
                            let pageSize = $('#exampleTable').bootstrapTable('getOptions').pageSize;     //通过table的#id 得到每页多少条
                            let pageNumber = $('#exampleTable').bootstrapTable('getOptions').pageNumber; //通过table的#id 得到当前第几页
                            return pageSize * (pageNumber - 1) + index + 1;    // 返回每条的序号： 每页条数 *（当前页 - 1 ）+ 序号
                        }
                    },
                    // {
                    // 	field : 'secretKey',
                    // 	title : '密钥'
                    // },
                    {
                        field: 'userName',
                        title: '使用人'
                    },
                    {
                        field: 'unitName',
                        title: '单位名称'
                    },
                    // {
                    // 	field : 'status',
                    // 	title : '密钥状态',
                    // 	formatter:function (value, row, index){
                    // 		switch (value) {
                    // 			case '0':
                    // 				return '使用中';
                    // 			case '1':
                    // 				return '禁用';
                    // 			case '2':
                    // 				return '已过期';
                    // 		}
                    // 	}
                    // },
                    {
                        field: 'createrDate',
                        title: '生成日期',
                    },
                    // {
                    // 	field : 'expirationDate',
                    // 	title : '截止有效期',
                    // 	formatter:function (value, row, index){
                    // 		return  value === null ? '永久有效' : value
                    // 	}
                    // },
                    {
                        field: 'remark',
                        title: '备注',
                        cellStyle: formatTableUnit,
                        formatter: paramsMatter
                    },
                    {
                        title: '操作',
                        field: '',
                        align: 'center',
                        formatter: function (value, row, index) {
                            let encodedRow = encodeURIComponent(stringifyWithoutCircular(row));
                            let e = `<a class="btn btn-primary btn-sm" href="#" mce_href="#" title="编辑" onclick="edit('${row.id}')">编辑</a>`;
                            let d = `<a class="btn btn-danger btn-sm" href="#" title="删除" mce_href="#" onclick="remove('${row.id}')">删除</a>`;
                            let s = `<a class="btn btn-success btn-sm" href="#" title="详情" mce_href="#" onclick="resetPwd('${row.id}')">详情</a>`;
                            let c = `<a class="btn btn-warning btn-sm" href="#" title="禁用" mce_href="#" onclick="forbidden('${encodedRow}')">
														${row.status === '0' ? '禁用' : '启用'}
														</a>`;
                            let f = `<a class="btn btn-warning btn-sm" href="#" title="权限配置" mce_href="#" onclick="permission('${row.userId}')">
														权限配置
														</a>`;
                            return f + s + e + d;
                        }
                    }]
            });
}

function reLoad() {
    $('#exampleTable').bootstrapTable('refresh');
}

function permission(id) {
    sessionStorage.setItem('qx_USERID', JSON.stringify(id))
    layer.open({
        type: 2,
        title: '权限配置',
        maxmin: true,
        shadeClose: false, // 点击遮罩关闭层
        area: ['100%', '100%'],
        content: `/secretKey/permission` // iframe的url
    });
}

function formatTableUnit(value, row, index) {
    return {
        css: {
            "white-space": 'nowrap',
            "text-overflow": "ellipsis",
            "overflow": "hidden",
            "max-width": "100px"
        }
    }
}

function paramsMatter(value, row, index, field) {
    var span = document.createElement('span')
    span.setAttribute('title', value);
    span.innerHTML = value;
    return span.outerHTML;
}

/**
 * 表格数据字符串处理
 * */
function stringifyWithoutCircular(obj) {
    const cache = new Set();

    return JSON.stringify(obj, function (key, value) {
        if (typeof value === 'object' && value !== null) {
            if (cache.has(value)) {
                // 如果已经访问过该对象，则返回一个占位符
                return '[Circular Reference]';
            }
            cache.add(value);
        }
        return value;
    });
}

/**
 * 新增密钥跳转
 * */
function add() {
    layer.open({
        type: 2,
        title: '新增使用人',
        maxmin: true,
        shadeClose: false, // 点击遮罩关闭层
        area: ['100%', '100%'],
        content: `/secretKey/add/` // iframe的url
    });
}

/**
 * 编辑数据跳转
 * */
function edit(id) {
    layer.open({
        type: 2,
        title: '编辑',
        maxmin: true,
        shadeClose: false, // 点击遮罩关闭层
        area: ['100%', '100%'],
        content: `/secretKey/edit/${id}?type=0`// iframe的url
    });
}

/**
 * 禁用
 * id (根据id禁用选项)
 * */
function forbidden(data) {
    let datas = JSON.parse(decodeURIComponent(data))
    let {status, secretAssets} = datas
    let text = `确定要${status === '0' ? '禁用' : '启用'}选中的记录`
    layer.confirm(text, {
        btn: ['确定', '取消']
    }, function () {
        $.ajax({
            type: 'post',
            url: "/secretKey/editSecretKey",
            data: JSON.stringify({
                ...datas,
                status: status === '0' ? '1' : '0',
            }),
            contentType: "application/json", // 指定发送的内容类型为 JSON
            success: function (r) {
                if (r.code === '0') {
                    layer.msg('成功');
                    reLoad();
                } else {
                    layer.msg('失败');
                }
            }
        });
    })
}

/**
 * 删除
 * id (根据id删除选项)
 * */
function remove(id) {
    layer.confirm('确定要删除选中的记录？', {
        btn: ['确定', '取消']
    }, function () {
        $.ajax({
            type: 'get',
            url: `/secretKey/deletedById?id=${id}`,
            success: function (r) {
                if (r.code === '0') {
                    layer.msg('删除成功');
                    reLoad();
                } else {
                    layer.msg('删除失败');
                }
            }
        });
    })
}

/**
 * 详情页跳转
 * */
function resetPwd(id) {
    layer.open({
        type: 2,
        title: '详情',
        maxmin: true,
        shadeClose: false, // 点击遮罩关闭层
        area: ['100%', '100%'],
        content: `/secretKey/edit/${id}?type=1`// iframe的url
    });
}
